﻿using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Web;

namespace BackFantasiaFVF.Modelo
{
    public class EjemploBD
    {
        /// <summary>
        /// Ejemplo de agregar en la base de datos. Los parametros deberian ser objetos.
        /// </summary>
        /// <param name="nombre"></param>
        /// <param name="categoria"></param>
        /// <param name="descripcion"></param>
        /// <returns></returns>
        public static bool AgregarPrivilegioEnBD(String nombre, String categoria, String descripcion)
        {
            SqlConnection con = new SqlConnection(BaseDatos.STRINGDECONEXION);
            string comando = "INSERT INTO PRIVILEGIO VALUES(@nombre, @categoria, @descripcion)";
            SqlCommand comandoInsertar = new SqlCommand(comando, con);
            try
            {
                con.Open();
                comandoInsertar.Parameters.AddWithValue("@nombre", nombre);
                comandoInsertar.Parameters.AddWithValue("@categoria", categoria);
                comandoInsertar.Parameters.AddWithValue("@descripcion", descripcion);
                int i = comandoInsertar.ExecuteNonQuery();
                if (i > 0)
                    return true;
                return false;
            }
            catch
            {
                return false;
            }
            finally
            {
                con.Close();
            }
        }

        /// <summary>
        /// El string[] debe ser una clase que debe devolver
        /// </summary>
        /// <param name="identificador"></param>
        /// <returns></returns>
        public static String[] BuscarPrivilegioPorId(String identificador)
        {
            SqlConnection con = new SqlConnection(BaseDatos.STRINGDECONEXION);
            String[] datos = new String[3];
            string comando = "SELECT nombre_pri, categoria_pri, descripcion_pri FROM PRIVILEGIO WHERE id_pri = @id";
            SqlCommand comandoSeleccionar = new SqlCommand(comando, con);
            SqlDataReader reader;
            try
            {
                con.Open();
                comandoSeleccionar.Parameters.AddWithValue("@id", identificador);
                reader = comandoSeleccionar.ExecuteReader();
                //Si solo quieren leer una linea basta con colocar un if, pero si quieren leer varias lineas usen este
                //while.
                while (reader.Read())
                {
                    datos[0] = reader["nombre_pri"].ToString();
                    datos[1] = reader["categoria_pri"].ToString();
                    datos[2] = reader["descripcion_pri"].ToString();
                }
                return datos;
            }
            catch
            {
                return null;
            }
            finally
            {
                con.Close();
            }
        }

        /// <summary>
        /// Metodo para actualizar algun elemento
        /// </summary>
        /// <param name="identificador"></param>
        /// <param name="nombre"></param>
        /// <param name="descripcion"></param>
        /// <returns></returns>
        public static bool ActualizarPrivilegioPorId(String identificador, String nombre, String descripcion)
        {
            SqlConnection con = new SqlConnection(BaseDatos.STRINGDECONEXION);
            string comando = "UPDATE PRIVILEGIO SET nombre_pri = @nombre, descripcion_pri = @descripcion WHERE id_pri = @id";
            SqlCommand comandoActualizar = new SqlCommand(comando, con);
            try
            {
                con.Open();
                comandoActualizar.Parameters.AddWithValue("@id", identificador);
                comandoActualizar.Parameters.AddWithValue("@nombre", nombre);
                comandoActualizar.Parameters.AddWithValue("@descripcion", descripcion);
                int i = comandoActualizar.ExecuteNonQuery();
                if (i > 0)
                    return true;
                return false;
            }
            catch
            {
                return false;
            }
            finally
            {
                con.Close();
            }
        }
    }
}